// oneway.c
// 在一个汽车仅能向东或向北行驶的城市中
// 利用递归
// 计算汽车共有多少种可运行的方案

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int f(int dx,int dy){
    // dx dy代表从起始点到终点的距离（(x2-x1,y2-y1) 相对距离）
    int a,b;
    if(dx == 0 || dy == 0){
        //基本场景 起点=终点
        return 1;
    }
    a = f(dx - 1,dy);
    b = f(dx,dy - 1);
    return (a + b);
}

int
main(int argc,char * argv[]){

    int deltax,deltay;
    int c;
    if(argc < 3){

        printf("need 2 positive integer.\n");
        return EXIT_FAILURE;
    }
    deltax = (int)strtol(argv[1],NULL,10);
    deltay = (int)strtol(argv[2],NULL,10);
    if(deltax < 0 || deltay < 0){

        printf("need 2 positive integer.\n");
        return EXIT_FAILURE;
    }
    c = f(deltax,deltay);
    printf("f(%d,%d) = %d.\n",deltax,deltay,c);
    return EXIT_SUCCESS;
}